GtkHeaderBar: Don't leak
authorMatthias Clasen <mclasen@redhat.com>
Wed, 20 Mar 2013 00:35:28 +0000 (20:35 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 20 Mar 2013 00:35:28 +0000 (20:35 -0400)
Should have a finalize function, if there's strings to free.
Also avoid some pointless extra ref on custom title widgets.

gtk/gtkheaderbar.c

index 3058c9e6f609c058b4094eb8b2bda4eeb898e12b..88bc1ab925002ae96b498590e69053e9dfff7881 100644 (file)
@@ -682,12 +682,11 @@ gtk_header_bar_set_custom_title (GtkHeaderBar *bar,
 
       priv->custom_title = NULL;
       gtk_widget_unparent (custom);
-      g_object_unref (custom);
     }
 
   if (title_widget)
     {
-      priv->custom_title = g_object_ref (title_widget);
+      priv->custom_title = title_widget;
 
       gtk_widget_hide (priv->label);
 
@@ -726,6 +725,16 @@ gtk_header_bar_get_custom_title (GtkHeaderBar *bar)
   return bar->priv->custom_title;
 }
 
+static void
+gtk_header_bar_finalize (GObject *object)
+{
+  GtkHeaderBar *bar = GTK_HEADER_BAR (object);
+
+  g_free (bar->priv->title);
+
+  G_OBJECT_CLASS (gtk_header_bar_parent_class)->finalize (object);
+}
+
 static void
 gtk_header_bar_get_property (GObject    *object,
                              guint       prop_id,
@@ -1048,6 +1057,7 @@ gtk_header_bar_class_init (GtkHeaderBarClass *class)
   GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
   GtkContainerClass *container_class = GTK_CONTAINER_CLASS (class);
 
+  object_class->finalize = gtk_header_bar_finalize;
   object_class->get_property = gtk_header_bar_get_property;
   object_class->set_property = gtk_header_bar_set_property;